﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using System.Data;
using AcadPosApp.Utilidades;
using Microsoft.Reporting.WebForms;
using System.Globalization;

namespace AcadPosApp.ControlarMatricula
{
    public partial class MatriculaAluno : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                carregarEstados();
                ddlEstadoPesquisa.SelectedValue = "1";
                pnlPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
                txtCadDescricao.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultarCursoCad.ClientID + "')");
                gvwPesquisaTurmas.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConfirmar.ClientID + "')");
                if (Session["saidaPagina"] != null && Session["saidaPagina"].ToString() == "ST")
                {
                    MatriculaSessao matriculaSessao = (MatriculaSessao)Session["matriculaSessao"];
                    if (matriculaSessao.Acao == "Inserir")
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Situação inserida com sucesso!")), true);
                    else if (matriculaSessao.Acao == "Excluir")
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Situação excluída com sucesso!")), true);
                    recarregaPagina();
                }
                if (Session["saidaPagina"] != null && Session["saidaPagina"].ToString() == "FC")
                {
                    recarregaPagina();
                }
            }
            if (gvwMatriculasAluno.Visible == true && gvwMatriculasAluno.SelectedIndex > -1)
            {
                pnlOpcoesMatricula.Visible = true;
            }
            else
            {
                pnlOpcoesMatricula.Visible = false;
            }
        }

        private void recarregaPagina()
        {
            MatriculaSessao matriculaSessao = (MatriculaSessao)Session["matriculaSessao"];

            ddlEstadoPesquisa.SelectedValue = matriculaSessao.IdEstado.ToString();
            TxtPesquisa.Text = matriculaSessao.NomeAluno;
            gvwPesquisa.Visible = true;
            carregarAlunos();
            gvwPesquisa.SelectedIndex = matriculaSessao.IndicePesquisa;

            #region CarregaMatriculas
            pnlMatriculasAluno.Visible = true;
            Matricula matricula = new AcadPos.Entity.Matricula();
            matricula.MatriculaAluno = matriculaSessao.MatriculaAluno;
            gvwMatriculasAluno.DataSource = ControlClass.CNMatricula.listaMatriculasAluno(matricula);
            gvwMatriculasAluno.DataBind();
            #endregion

            btnMatricular.Visible = true;
            btnCancelar.Visible = true;
            //pnlRelatoriosMatricula.Visible = true;
            gvwMatriculasAluno.SelectedIndex = matriculaSessao.IndiceMatriculas;
            Session.Remove("saidaPagina");
            Session.Remove("matriculaSessao");
        }

        private void carregarEstados()
        {
            ddlEstadoPesquisa.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlEstadoPesquisa.DataTextField = "ESTADO";
            ddlEstadoPesquisa.DataValueField = "ID_ESTADO";
            ddlEstadoPesquisa.DataBind();
        }

        private void carregarAlunos()
        {
            string pNome = TxtPesquisa.Text;
            int idEstado = Convert.ToInt32(ddlEstadoPesquisa.SelectedValue);
            gvwPesquisa.DataSource = ControlClass.CNAluno.listarAlunosXEstado(pNome, idEstado);
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
            //pnlRelatoriosMatricula.Visible = false;
        }

        private void carregaMatriculasAluno()
        {
            pnlMatriculasAluno.Visible = true;
            Matricula matricula = new AcadPos.Entity.Matricula();
            matricula.MatriculaAluno = Convert.ToInt32(gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["MATRICULA"].ToString());
            gvwMatriculasAluno.DataSource = ControlClass.CNMatricula.listaMatriculasAluno(matricula);
            gvwMatriculasAluno.DataBind();
            gvwMatriculasAluno.SelectedIndex = -1;
            pnlOpcoesMatricula.Visible = false;
        }

        protected void gvwPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaMatriculasAluno();
            btnMatricular.Visible = true;
            btnCancelar.Visible = true;
            if (gvwMatriculasAluno.EmptyDataText.Contains("Dados não localizados"))
                pnlOpcoesMatricula.Visible = false;
            //pnlRelatoriosMatricula.Visible = true;
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            gvwPesquisa.Visible = true;
            pnlMatriculasAluno.Visible = false;
            pnlOpcoesMatricula.Visible = false;
            carregarAlunos();
        }

        private void carregaAreasConhecimentoCadastro()
        {
            AreaConhecimento area = new AreaConhecimento();
            area.Descricao = string.Empty;
            ddlCadAreaConhecimento.DataSource = ControlClass.CNAreaConhecimento.listarAreaConhecimento(area);
            ddlCadAreaConhecimento.DataTextField = "DESCRICAO";
            ddlCadAreaConhecimento.DataValueField = "ID_AREA_CONHECIMENTO";
            ddlCadAreaConhecimento.DataBind();
            ddlCadAreaConhecimento.Items.Insert(0, new ListItem("Selecione", ""));
        }

        private void carregaGridPesquisaCadastro()
        {
            gvwCursoCadastro.Visible = true;
            Curso curso = new Curso();
            curso.Descricao = txtCadDescricao.Text;
            curso.IdAreaConhecimento = Convert.ToInt32(ddlCadAreaConhecimento.SelectedValue);
            gvwCursoCadastro.DataSource = ControlClass.CNCurso.listarCursos(curso);
            gvwCursoCadastro.DataBind();
            gvwCursoCadastro.SelectedIndex = -1;
            if (gvwCursoCadastro.Rows.Count > 0)
            {
                gvwCursoCadastro.SelectedIndex = 0;
                carregaCurriculosCursoCadastro();
                carregaModulosCurriculoCadastro();
            }
        }

        private void carregaCurriculosCursoCadastro()
        {

            ddlCadCurriculo.Enabled = true;
            Curriculo curriculo = new Curriculo();
            curriculo.IdCurso = Convert.ToInt32(gvwCursoCadastro.SelectedValue);
            DataTable dt = ControlClass.CNCurriculo.listaCurriculoPorCurso(curriculo);
            ddlCadCurriculo.DataSource = dt;
            ddlCadCurriculo.DataTextField = "COD_CURRICULO_SITUACAO";
            ddlCadCurriculo.DataValueField = "ID_CURRICULO";
            ddlCadCurriculo.DataBind();
            //ddlCadCurriculo.Items.Insert(0, new ListItem("Selecione", ""));
            if (dt.Rows.Count <= 0)
            {
                ddlCadCurriculo.Enabled = false;
                ddlCadCurriculo.Items.Clear();
            }
            else
                ddlCadCurriculo.Enabled = true;
        }

        private void carregaModulosCurriculoCadastro()
        {
            if (ddlCadCurriculo.SelectedValue != "")
            {
                ModuloCurriculo moduloCurriculo = new ModuloCurriculo();
                moduloCurriculo.IdCurriculo = Convert.ToInt32(ddlCadCurriculo.SelectedValue);
                DataTable dt = ControlClass.CNModuloCurriculo.listaModulosCurriculo(moduloCurriculo);
                ddlCadModulo.DataSource = dt;
                ddlCadModulo.DataTextField = "DESCRICAO_MODULO";
                ddlCadModulo.DataValueField = "ID_MODULO";
                ddlCadModulo.DataBind();
                if (dt.Rows.Count <= 0)
                {
                    ddlCadModulo.Enabled = false;
                    ddlCadModulo.Items.Clear();
                }
                else
                    ddlCadModulo.Enabled = true;
            }
            else
            {
                ddlCadModulo.Enabled = false;
                ddlCadModulo.Items.Clear();
            }

        }

        private void carregaEstadosCadastro()
        {
            ddlCadEstado.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlCadEstado.DataTextField = "ESTADO";
            ddlCadEstado.DataValueField = "ID_ESTADO";
            ddlCadEstado.DataBind();
            Estado estado = ControlClass.CNEstado.carregarDadosEstadoSE();
            if (estado.IdEstado > 0)
                ddlCadEstado.SelectedValue = estado.IdEstado.ToString();
        }

        private void carregaPoloCadastro()
        {
            if (ddlCadEstado.SelectedValue != "")
            {

                Polo polo = new Polo();
                polo.IdEstado = Convert.ToInt32(ddlCadEstado.SelectedValue);
                DataTable dt = ControlClass.CNPolo.listaPolosEstado(polo);
                ddlCadPolo.DataSource = dt;
                ddlCadPolo.DataTextField = "DESCRICAO";
                ddlCadPolo.DataValueField = "ID_POLO";
                ddlCadPolo.DataBind();
                if (dt.Rows.Count <= 0)
                {
                    ddlCadPolo.Enabled = false;
                    ddlCadPolo.Items.Clear();
                }
                else
                    ddlCadPolo.Enabled = true;

            }
            else
            {
                ddlCadPolo.Enabled = false;
                ddlCadPolo.Items.Clear();
            }
        }

        private void carregaTurmas()
        {
            gvwPesquisaTurmas.Visible = true;
            Turma turma = new Turma();
            turma.IdCurriculo = Convert.ToInt32(ddlCadCurriculo.SelectedValue);
            turma.IdPolo = Convert.ToInt32(ddlCadPolo.SelectedValue);
            gvwPesquisaTurmas.DataSource = ControlClass.CNTurma.listaTurmas(turma);
            gvwPesquisaTurmas.DataBind();
            gvwPesquisaTurmas.SelectedIndex = -1;
        }

        protected void gvwMatriculasAluno_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwMatriculasAluno.PageIndex = e.NewPageIndex;
            carregaMatriculasAluno();
            pnlOpcoesMatricula.Visible = false;
        }

        protected void gvwMatriculasAluno_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                Financeiro financeiro = new Financeiro();
                Matricula matricula = new Matricula();
                int index = int.Parse((String)e.CommandArgument);
                financeiro.MatriculaAluno = Convert.ToInt32(gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["MATRICULA"].ToString());
                financeiro.IdTurma = Convert.ToInt32(gvwMatriculasAluno.DataKeys[index]["ID_TURMA"].ToString());
                matricula.IdMatricula = Convert.ToInt32(gvwMatriculasAluno.DataKeys[index]["ID_MATRICULA"].ToString());

                if (e.CommandName == "Excluir")
                {
                    pnlCadastro.Visible = false;
                    if (!ControlClass.CNMatricula.validarExistenciaNotas(matricula))
                    {
                        if (!ControlClass.CNMatricula.validarExistenciaPagamento(financeiro))
                        {
                            if (ControlClass.CNMatricula.excluir(matricula))
                            {
                                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir, "")), true);
                                pnlCadastro.Visible = false;
                                pnlPesquisa.Enabled = true;
                                carregaMatriculasAluno();
                            }
                            else
                            {
                                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Não foi possível realizar a operação. Por favor, tente novamente.")), true);
                            }
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "A matrícula não pode ser excluída pois já existem parcelas pagas.")), true);
                        }
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "A matrícula não pode ser excluída pois já existem notas de disciplinas lançadas.")), true);
                    }
                }
                else if (e.CommandName == "RelContrato")
                {
                    if (gvwPesquisa.SelectedIndex > -1)
                    {
                        Session["matricula"] = gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["MATRICULA"].ToString();
                        Session["id_matricula"] = matricula.IdMatricula;
                        //Response.Redirect("Contrato.aspx");
                        ScriptManager.RegisterStartupScript(Page, typeof(Page), "OpenWindow", "window.open('Contrato.aspx', '_blank');", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione primeiro o aluno para imprimir um contrato!")), true);
                    }
                }
                else if (e.CommandName == "RelCompMatricula")
                {
                    geraComprovanteMatricula(index);
                }
            }
            catch (Exception ex)
            {
                //if (ex.Message.Contains("FK_TB_MATRIZ_CURRICULAR_TB_DISCIPLINA"))
                //    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Não é possível excluir um módulo que possua disciplinas!")), true);
                //else
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
                pnlCadastro.Visible = false;
                pnlPesquisa.Enabled = true;
            }
        }

        private void geraComprovanteMatricula(int index)
        {
            try
            {
                MatriculaSessao matriculaSessao = new MatriculaSessao();
                
                matriculaSessao.MatriculaAluno = Convert.ToInt32(gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["MATRICULA"].ToString());
                matriculaSessao.IdMatricula = Convert.ToInt32(gvwMatriculasAluno.DataKeys[index]["ID_MATRICULA"].ToString());
                matriculaSessao.IdTurma = Convert.ToInt32(gvwMatriculasAluno.DataKeys[index]["ID_TURMA"].ToString());
                matriculaSessao.CodCurso = Convert.ToInt32(gvwMatriculasAluno.Rows[index].Cells[2].Text.ToString());
                matriculaSessao.NomeCurso = gvwMatriculasAluno.Rows[index].Cells[3].Text.ToString();
                matriculaSessao.NomeAlunoCompleto = gvwPesquisa.Rows[gvwPesquisa.SelectedIndex].Cells[2].Text.ToString();
                matriculaSessao.Curriculo = Convert.ToInt32(gvwMatriculasAluno.Rows[index].Cells[4].Text.ToString());
                matriculaSessao.NomeModulo = gvwMatriculasAluno.Rows[index].Cells[5].Text.ToString();
                matriculaSessao.Turma = gvwMatriculasAluno.Rows[index].Cells[6].Text.ToString();

                                
                Matricula matricula = new Matricula();
                matricula.MatriculaAluno = matriculaSessao.MatriculaAluno;
                matricula.IdTurma = matriculaSessao.IdTurma;
                matricula.IdMatricula = matriculaSessao.IdMatricula;
                int chTotalCurso = ControlClass.CNCurso.cargaHorariaCurso(matriculaSessao.CodCurso);

                DataTable dtImp = ControlClass.CNMatricula.listaDisciplinasMatriculadasPorAluno(matricula);                             

                if (dtImp.Rows.Count == 0)
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('Não há registros à serem impressos!', function() {});", true);
                }
                else
                {
                    ReportViewer ReportViewer1 = new ReportViewer();
                    ReportViewer1.Reset();
                    ReportViewer1.ProcessingMode = ProcessingMode.Local;
                    ReportViewer1.LocalReport.ReportPath = Server.MapPath(@"~/Relatorios/relComprovanteMatricula.rdlc");
                    ReportViewer1.LocalReport.DataSources.Clear();


                    //Mês em português por extenso
                    string mesExtenso = new DateTime(1900, DateTime.Now.Month, 1).ToString("MMMM", new CultureInfo("pt-BR"));
                    string cpf = gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["CPF"].ToString();
                    string cpfformatado = Convert.ToUInt64(cpf).ToString(@"000\.000\.000\-00");
                    
                    ReportParameter rp_aluno = new ReportParameter("rp_aluno", Server.HtmlDecode(matriculaSessao.MatriculaAluno.ToString() + " - " + matriculaSessao.NomeAlunoCompleto.ToString()));
                    ReportParameter rp_curso = new ReportParameter("rp_curso", Server.HtmlDecode(matriculaSessao.NomeCurso.ToString()));
                    ReportParameter rp_turma = new ReportParameter("rp_turma", Server.HtmlDecode(matriculaSessao.Turma.ToString()));
                    ReportParameter rp_modulo = new ReportParameter("rp_modulo", Server.HtmlDecode(matriculaSessao.NomeModulo.ToString()));
                    ReportParameter rp_curriculo = new ReportParameter("rp_curriculo", Server.HtmlDecode(matriculaSessao.Curriculo.ToString()));
                    ReportParameter rp_mes = new ReportParameter("rp_mes", Server.HtmlDecode(mesExtenso));
                    ReportParameter rp_cpf = new ReportParameter("rp_cpf", Server.HtmlDecode(cpfformatado));
                    // ReportParameter rp_chCurso = new ReportParameter("rp_chCurso", Server.HtmlDecode(chTotalCurso.ToString().Trim())); // Adicionado (05-05-2015)

                    ReportParameter[] ReportParans = new ReportParameter[] { rp_aluno, rp_curso, rp_turma, rp_curriculo, rp_modulo, rp_mes, rp_cpf };   //, rp_chCurso};

                    ReportViewer1.LocalReport.SetParameters(ReportParans);

                    ReportDataSource rds1 = new ReportDataSource();
                    rds1.Name = "DataSet1";
                    rds1.Value = dtImp;

                    ReportDataSource rds2 = new ReportDataSource();
                    rds2.Name = "DataSet2";
                    rds2.Value = ControlClass.CNParametros.getCabecalhoRelatorio();

                    ReportViewer1.LocalReport.DataSources.Clear();
                    ReportViewer1.LocalReport.DataSources.Add(rds1);
                    ReportViewer1.LocalReport.DataSources.Add(rds2);
                    ReportViewer1.LocalReport.Refresh();

                    #region Gerar PDF
                    Warning[] warn = null;
                    string[] streamids = null;
                    string mimeType = "application/pdf";
                    string encoding = string.Empty;
                    string extension = string.Empty;
                    byte[] byteViewer;

                    byteViewer = ReportViewer1.LocalReport.Render("pdf", null, out mimeType, out encoding, out extension, out streamids, out warn);
                    Response.Buffer = true;
                    Response.Clear();
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-disposition", "attachment; filename=CompMatricula.pdf");
                    Response.BinaryWrite(byteViewer);
                    Response.Flush();

                    Response.End();
                    Response.ClearContent();
                    #endregion
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('Falha ao tentar gerar o relatório. Tente novamente!', function() {});", true);
            }
        }

        protected void gvwMatriculasAluno_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton l = (ImageButton)e.Row.FindControl("EXCLUIR");
                l.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("Contrato");
                button2.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button3 = (ImageButton)e.Row.FindControl("CompMatricula");
                button3.CommandArgument = e.Row.RowIndex.ToString();

                //ImageButton button4 = (ImageButton)e.Row.FindControl("RelDadosPessoais");
                //button2.CommandArgument = e.Row.RowIndex.ToString();

            }
        }

        protected void gvwMatriculasAluno_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
        }

        protected void btnConsultarCursoCad_Click(object sender, EventArgs e)
        {
            carregaGridPesquisaCadastro();
        }

        protected void gvwCursoCadastro_SelectedIndexChanged(object sender, EventArgs e)
        {

            ddlCadCurriculo.Enabled = false;
            ddlCadCurriculo.Items.Clear();
            ddlCadModulo.Enabled = false;
            ddlCadModulo.Items.Clear();
            ddlCadPolo.Enabled = false;
            ddlCadPolo.Items.Clear();
            gvwPesquisaTurmas.Visible = false;
            gvwPesquisaTurmas.SelectedIndex = -1;
            carregaEstadosCadastro();
            carregaCurriculosCursoCadastro();
            carregaModulosCurriculoCadastro();
            carregaPoloCadastro();
        }

        protected void ddlCadCurriculo_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlCadModulo.Enabled = false;
            ddlCadModulo.Items.Clear();
            ddlCadPolo.Enabled = false;
            ddlCadPolo.Items.Clear();
            gvwPesquisaTurmas.Visible = false;
            gvwPesquisaTurmas.SelectedIndex = -1;
            carregaEstadosCadastro();
            carregaModulosCurriculoCadastro();
        }

        protected void ddlCadEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaPoloCadastro();
        }

        protected void btnMatricular_Click(object sender, EventArgs e)
        {
            pnlCadastro.Visible = true;
            resetaCamposCadastro();
            carregaAreasConhecimentoCadastro();
            carregaEstadosCadastro();
            carregaPoloCadastro();
            pnlPesquisa.Enabled = false;
            btnConfirmar.CommandName = "Inserir";
            txtCadDescricao.Text = string.Empty;
        }

        private void resetaCamposCadastro()
        {
            gvwCursoCadastro.Visible = false;
            gvwCursoCadastro.SelectedIndex = -1;
            ddlCadCurriculo.Enabled = false;
            ddlCadCurriculo.Items.Clear();
            ddlCadModulo.Enabled = false;
            ddlCadModulo.Items.Clear();
            ddlCadPolo.Enabled = false;
            ddlCadPolo.Items.Clear();
            gvwPesquisaTurmas.Visible = false;
            gvwPesquisaTurmas.SelectedIndex = -1;
        }

        protected void gvwCursoCadastro_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwCursoCadastro.PageIndex = e.NewPageIndex;
            carregaGridPesquisaCadastro();
        }

        protected void gvwCursoCadastro_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[4].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[4].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[4].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[4].Visible = false;
            }
            #endregion
        }

        protected void ddlCadAreaConhecimento_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlCadAreaConhecimento.SelectedValue != "")
            {
                txtCadDescricao.Enabled = true;

            }
            else
            {
                resetaCamposCadastro();
                carregaEstadosCadastro();
                txtCadDescricao.Text = string.Empty;
                txtCadDescricao.Enabled = false;
            }
        }

        protected void btnPesquisarTurmas_Click(object sender, EventArgs e)
        {
            if (ddlCadPolo.SelectedValue != "" && ddlCadModulo.SelectedValue != "" && ddlCadCurriculo.SelectedValue != ""
                && gvwCursoCadastro.SelectedIndex > -1 && ddlCadAreaConhecimento.SelectedValue != "")
            {
                gvwPesquisaTurmas.Visible = true;
                carregaTurmas();
            }
            else
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione todos os campos para procurar uma Turma!")), true);
            }
        }

        protected void gvwPesquisaTurmas_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisaTurmas.PageIndex = e.NewPageIndex;
            carregaTurmas();
        }

        protected void ddlCadModulo_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlCadPolo.Enabled = false;
            ddlCadPolo.Items.Clear();
            gvwPesquisaTurmas.Visible = false;
            gvwPesquisaTurmas.SelectedIndex = -1;
            carregaEstadosCadastro();
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                if (ddlCadPolo.SelectedValue != "" && ddlCadModulo.SelectedValue != "" && ddlCadCurriculo.SelectedValue != ""
              && gvwCursoCadastro.SelectedIndex > -1 && ddlCadAreaConhecimento.SelectedValue != "" && gvwPesquisaTurmas.SelectedIndex > -1)
                {
                    Financeiro financeiro = new Financeiro();
                    financeiro.MatriculaAluno = Convert.ToInt32(gvwPesquisa.Rows[gvwPesquisa.SelectedIndex].Cells[1].Text.ToString());
                    financeiro.IdTurma = Convert.ToInt32(gvwPesquisaTurmas.DataKeys[gvwPesquisaTurmas.SelectedIndex]["ID_TURMA"].ToString());
                    financeiro.Parcela = 1;
                    financeiro.Valor = Convert.ToDecimal(gvwPesquisaTurmas.Rows[gvwPesquisaTurmas.SelectedIndex].Cells[5].Text.ToString().Substring(2).Trim());
                    financeiro.DataVencimento = DateTime.Now;
                    financeiro.NossoNumero = Convert.ToInt32(financeiro.MatriculaAluno.ToString() + DateTime.Now.Year.ToString() + financeiro.Parcela.ToString());// + gvwPesquisaTurmas.DataKeys[gvwPesquisaTurmas.SelectedIndex]["ID_TURMA"].ToString());
                    financeiro.Situacao = "EM ABERTA";
                    if (btnConfirmar.CommandName == "Inserir")
                    {
                        if (ControlClass.CNMatricula.inserir1ParcelaFinanceiro(financeiro))
                        {
                            finalizaOperacao();
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                            carregaMatriculasAluno();
                            carregarAlunos();
                            pnlMatriculasAluno.Visible = false;
                            btnMatricular.Visible = false;
                            btnCancelar.Visible = false;
                            #region Geração Boleto de Matrícula
                            DataTable dtDados = ControlClass.CNMatricula.obterDadosFinanceiroMatricula(financeiro.NossoNumero);
                            if (dtDados.Rows.Count > 0)
                            {
                                Session["dadosParcelas"] = dtDados;
                                Session["tipoBoleto"] = "PAGAMENTO MATRICULA";
                                Session["InformacoesBoleto"] = "";
                                ScriptManager.RegisterStartupScript(Page, typeof(Page), "OpenWindow", "window.open('../Boletos/boletoBanese.aspx', '_blank');", true);
                            }
                            else
                            {
                                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('Não foram localizadas parcelas à serem pagas!', function() {});", true);
                            }
                            #endregion
                        }
                    }
                }
                else
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione todos os campos para gerar a matrícula!")), true);
                }
            }
            catch (Exception ex)
            {

                if (ex.Message.Contains("IX_MATRICULA_DUPLICADA"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Essa matrícula já foi inserida para esses parâmetros!")), true);
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
            }
        }

        protected void btnCancelarCadastro_Click(object sender, EventArgs e)
        {
            TrustX.Util.UtilForm.LimparCampos(pnlCadastro);

            finalizaOperacao();
        }

        private void finalizaOperacao()
        {
            pnlCadastro.Visible = false;
            gvwCursoCadastro.Visible = false;
            gvwCursoCadastro.SelectedIndex = -1;
            ddlCadCurriculo.Enabled = false;
            ddlCadCurriculo.Items.Clear();
            ddlCadModulo.Enabled = false;
            ddlCadModulo.Items.Clear();
            ddlCadPolo.Enabled = false;
            ddlCadPolo.Items.Clear();
            gvwPesquisaTurmas.Visible = false;
            gvwPesquisaTurmas.SelectedIndex = -1;
            pnlPesquisa.Enabled = true;
        }

        protected void ddlCadPolo_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisaTurmas.Visible = false;
            gvwPesquisaTurmas.SelectedIndex = -1;
        }

        protected void ddlEstadoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlMatriculasAluno.Visible = false;
            pnlOpcoesMatricula.Visible = false;
            gvwPesquisa.Visible = false;
            //pnlRelatoriosMatricula.Visible = false;
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlMatriculasAluno.Visible = false;
            pnlOpcoesMatricula.Visible = false;
            gvwPesquisa.SelectedIndex = -1;
            gvwMatriculasAluno.SelectedIndex = -1;
            //pnlRelatoriosMatricula.Visible = false;
        }

        protected void btnSituacaoMatricula_Click(object sender, EventArgs e)
        {
            Session["idMatriculaSituacao"] = gvwMatriculasAluno.DataKeys[gvwMatriculasAluno.SelectedIndex]["ID_MATRICULA"].ToString();
            carregaSessaoDadosMatricula();
            Response.Redirect("SituacaoMatricula.aspx");
        }

        private void carregaSessaoDadosMatricula()
        {
            MatriculaSessao matriculaSessao = new MatriculaSessao();
            matriculaSessao.IdEstado = Convert.ToInt32(ddlEstadoPesquisa.SelectedValue);
            matriculaSessao.NomeAluno = TxtPesquisa.Text;
            matriculaSessao.MatriculaAluno = Convert.ToInt32(gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["MATRICULA"].ToString());
            matriculaSessao.IdMatricula = Convert.ToInt32(gvwMatriculasAluno.DataKeys[gvwMatriculasAluno.SelectedIndex]["ID_MATRICULA"].ToString());
            matriculaSessao.IdTurma = Convert.ToInt32(gvwMatriculasAluno.DataKeys[gvwMatriculasAluno.SelectedIndex]["ID_TURMA"].ToString());
            matriculaSessao.IndicePesquisa = gvwPesquisa.SelectedIndex;
            matriculaSessao.IndiceMatriculas = gvwMatriculasAluno.SelectedIndex;
            matriculaSessao.CodCurso = Convert.ToInt32(gvwMatriculasAluno.Rows[gvwMatriculasAluno.SelectedIndex].Cells[2].Text.ToString());
            matriculaSessao.NomeCurso = gvwMatriculasAluno.Rows[gvwMatriculasAluno.SelectedIndex].Cells[3].Text.ToString();
            matriculaSessao.NomeAlunoCompleto = gvwPesquisa.Rows[gvwPesquisa.SelectedIndex].Cells[2].Text.ToString();
            matriculaSessao.Curriculo = Convert.ToInt32(gvwMatriculasAluno.Rows[gvwMatriculasAluno.SelectedIndex].Cells[4].Text.ToString());
            matriculaSessao.NomeModulo = gvwMatriculasAluno.Rows[gvwMatriculasAluno.SelectedIndex].Cells[5].Text.ToString();
            matriculaSessao.Turma = gvwMatriculasAluno.Rows[gvwMatriculasAluno.SelectedIndex].Cells[6].Text.ToString();
            matriculaSessao.Cpf = gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["CPF"].ToString();
            Session["matriculaSessao"] = matriculaSessao;
        }

        protected void gvwMatriculasAluno_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlOpcoesMatricula.Visible = true;
        }

        protected void btnFinanceiroMatricula_Click(object sender, EventArgs e)
        {
            Session["idMatriculaSituacao"] = gvwMatriculasAluno.DataKeys[gvwMatriculasAluno.SelectedIndex]["ID_MATRICULA"].ToString();
            carregaSessaoDadosMatricula();
            Response.Redirect("FinanceiroMatricula.aspx");
        }

        protected void btnHistórico_Click(object sender, EventArgs e)
        {
            Session["idMatriculaSituacao"] = gvwMatriculasAluno.DataKeys[gvwMatriculasAluno.SelectedIndex]["ID_MATRICULA"].ToString();
            carregaSessaoDadosMatricula();
            Response.Redirect("HistoricoAluno.aspx");
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregarAlunos();
        }

        //protected void rdbRelContrato_CheckedChanged(object sender, EventArgs e)
        //{
        //    if (gvwPesquisa.SelectedIndex > -1)
        //    {
        //        Session["matricula"] = gvwPesquisa.DataKeys[gvwPesquisa.SelectedIndex]["MATRICULA"].ToString();
        //        Response.Redirect("Contrato.aspx");
        //    }
        //    else
        //    {
        //        rdbRelContrato.Checked = false;
        //        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione primeiro o aluno para imprimir um contrato!")), true);
        //    }
        //}

    }
}